/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gmovil_jpa.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author castlerock
 */
@Entity
@Table(name = "recibo_caja")
@NamedQueries({
    @NamedQuery(name = "ReciboCaja.findAll", query = "SELECT r FROM ReciboCaja r"),
    @NamedQuery(name = "ReciboCaja.findByIdReciboCaja", query = "SELECT r FROM ReciboCaja r WHERE r.idReciboCaja = :idReciboCaja"),
    @NamedQuery(name = "ReciboCaja.findByValorPagado", query = "SELECT r FROM ReciboCaja r WHERE r.valorPagado = :valorPagado"),
    @NamedQuery(name = "ReciboCaja.findByFechaPago", query = "SELECT r FROM ReciboCaja r WHERE r.fechaPago = :fechaPago"),
    @NamedQuery(name = "ReciboCaja.findByFidUsuarioCreador", query = "SELECT r FROM ReciboCaja r WHERE r.fidUsuarioCreador = :fidUsuarioCreador"),
    @NamedQuery(name = "ReciboCaja.findByFidUsuarioModificador", query = "SELECT r FROM ReciboCaja r WHERE r.fidUsuarioModificador = :fidUsuarioModificador"),
    @NamedQuery(name = "ReciboCaja.findByFechaCreacion", query = "SELECT r FROM ReciboCaja r WHERE r.fechaCreacion = :fechaCreacion"),
    @NamedQuery(name = "ReciboCaja.findByFechaModificacion", query = "SELECT r FROM ReciboCaja r WHERE r.fechaModificacion = :fechaModificacion")})
public class ReciboCaja implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_recibo_caja")
    private Integer idReciboCaja;
    @Basic(optional = false)
    @Column(name = "valor_pagado")
    private double valorPagado;
    @Basic(optional = false)
    @Column(name = "fecha_pago")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaPago;
    @Basic(optional = false)
    @Column(name = "fid_usuario_creador")
    private int fidUsuarioCreador;
    @Column(name = "fid_usuario_modificador")
    private Integer fidUsuarioModificador;
    @Basic(optional = false)
    @Column(name = "fecha_creacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;
    @Column(name = "fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaModificacion;
    @JoinColumn(name = "fid_factura", referencedColumnName = "id_factura")
    @ManyToOne(optional = false)
    private Factura factura;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "reciboCaja")
    private List<DetalleReciboMedioPago> detalleReciboMedioPagoList;

    public ReciboCaja() {
    }

    public ReciboCaja(Integer idReciboCaja) {
        this.idReciboCaja = idReciboCaja;
    }

    public ReciboCaja(Integer idReciboCaja, double valorPagado, Date fechaPago, int fidUsuarioCreador, Date fechaCreacion) {
        this.idReciboCaja = idReciboCaja;
        this.valorPagado = valorPagado;
        this.fechaPago = fechaPago;
        this.fidUsuarioCreador = fidUsuarioCreador;
        this.fechaCreacion = fechaCreacion;
    }

    public Integer getIdReciboCaja() {
        return idReciboCaja;
    }

    public void setIdReciboCaja(Integer idReciboCaja) {
        this.idReciboCaja = idReciboCaja;
    }

    public double getValorPagado() {
        return valorPagado;
    }

    public void setValorPagado(double valorPagado) {
        this.valorPagado = valorPagado;
    }

    public Date getFechaPago() {
        return fechaPago;
    }

    public void setFechaPago(Date fechaPago) {
        this.fechaPago = fechaPago;
    }

    public int getFidUsuarioCreador() {
        return fidUsuarioCreador;
    }

    public void setFidUsuarioCreador(int fidUsuarioCreador) {
        this.fidUsuarioCreador = fidUsuarioCreador;
    }

    public Integer getFidUsuarioModificador() {
        return fidUsuarioModificador;
    }

    public void setFidUsuarioModificador(Integer fidUsuarioModificador) {
        this.fidUsuarioModificador = fidUsuarioModificador;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public Date getFechaModificacion() {
        return fechaModificacion;
    }

    public void setFechaModificacion(Date fechaModificacion) {
        this.fechaModificacion = fechaModificacion;
    }

    public Factura getFactura() {
        return factura;
    }

    public void setFactura(Factura factura) {
        this.factura = factura;
    }

    public List<DetalleReciboMedioPago> getDetalleReciboMedioPagoList() {
        return detalleReciboMedioPagoList;
    }

    public void setDetalleReciboMedioPagoList(List<DetalleReciboMedioPago> detalleReciboMedioPagoList) {
        this.detalleReciboMedioPagoList = detalleReciboMedioPagoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idReciboCaja != null ? idReciboCaja.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ReciboCaja)) {
            return false;
        }
        ReciboCaja other = (ReciboCaja) object;
        if ((this.idReciboCaja == null && other.idReciboCaja != null) || (this.idReciboCaja != null && !this.idReciboCaja.equals(other.idReciboCaja))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gmovil_jpa.entidades.ReciboCaja[idReciboCaja=" + idReciboCaja + "]";
    }

}
